"""
LangGraph Edge（边）基础示例
=========================

本例主要演示：
1️⃣ 什么是 Edge（边）
2️⃣ Edge 如何定义节点之间的执行顺序
3️⃣ Edge 如何决定图的执行流转
"""

from langgraph.graph import StateGraph, START, END


# --- Step 1️⃣：定义节点 ---
def node_a(state: dict):
    print("🟢 进入 node_a，当前状态：", state)
    return {"step": "A"}

def node_b(state: dict):
    print("🟡 进入 node_b，当前状态：", state)
    return {"step": "B"}

def node_c(state: dict):
    print("🔵 进入 node_c，当前状态：", state)
    return {"step": "C"}


# --- Step 2️⃣：构建状态图 ---
builder = StateGraph(dict)

builder.add_node("A", node_a)
builder.add_node("B", node_b)
builder.add_node("C", node_c)

# --- Step 3️⃣：添加边（Edges）---
# Edge（边）的作用：定义节点间的执行路径。

# START → A：表示图从 START（入口）开始，先执行节点 A。
builder.add_edge(START, "A")

# A → B：当 A 执行完成后，执行 B。
builder.add_edge("A", "B")

# B → C：B 执行完成后，执行 C。
builder.add_edge("B", "C")

# C → END：C 执行完成后，图结束。
builder.add_edge("C", END)


# --- Step 4️⃣：编译并执行 ---
graph = builder.compile()
result = graph.invoke({"input": "Edge Demo"})

print("\n✅ 最终状态：", result)
